package com.i2silly.wxbot.quartz;


import org.quartz.Job;

import java.util.List;

/**
 * @description：Quartz任务管理服务接口
 */
public interface QuartzJobService {
    
    
    /**
     * 添加定时任务
     * @param jobName 任务名
     * @param jobClass 类型
     * @param cron  定时任务时间表达式
     */
    public void addJob(String jobName, Class<? extends Job> jobClass, String cron);
    /**
     * 添加定时任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName
     * @param jobClass
     * @param cron 
     */
    public void addJob(String jobName, String jobGroupName,  
            String triggerName, String triggerGroupName, Class<? extends Job> jobClass, String cron);
    /**
     * 修改定时任务
     * @param jobName
     * @param cron 
     */
    public void modifyJobCron(String jobName, String cron);
    
    /**
     * 修改定时任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName
     * @param cron 
     */
    public void modifyJobCron(String jobName,  String jobGroupName, String triggerName, String triggerGroupName, String cron);
    /**
     * 移除定时任务
     * @param jobName 
     */
    public void removeJob(String jobName);
    /**
     * 暂停定时任务
     * @param jobName
     */
    public void pauseJob(String jobName);
    /**
     * 移除定时任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName 
     */
    public void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName);
    
    /**
     * 暂停定时任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName
     */
    public void pauseJob(String jobName, String jobGroupName,  
            String triggerName, String triggerGroupName);
    /**
     * 启动所有定时任务
     */
    public void startJobs();
    /**
     * 关闭所有定时任务
     */
    public void shutdownJobs();
    /**
     * 计划中的任务
     */
    public List<ScheduleJob> intendJob();
    /**
     * 运行中的任务
     */
    public List<ScheduleJob> runningJob();
    
    /**
     * 恢复定时任务
     * @param jobName 
     */
    public void resumeJob(String jobName);
    /**
     * 恢复定时任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName 
     */
    public void resumeJob(String jobName, String jobGroupName,  
            String triggerName, String triggerGroupName);
}
